-- ****************************************
-- ************** KEYBINDINGS *************
-- ****************************************

-- -- 取消nvim默认的从n进入i模式的快捷键
-- vim.keymap.set("i", "<Nop>", "<Nop>", { noremap = true })
-- vim.keymap.set("v", "<Nop>", "<Nop>", { noremap = true })
-- vim.keymap.set("c", "<Nop>", "<Nop>", { noremap = true })
-- vim.keymap.set("o", "<Nop>", "<Nop>", { noremap = true })
-- vim.keymap.set("t", "<Nop>", "<Nop>", { noremap = true })

-- source vim config with <leader> enter
vim.keymap.set("n", "<leader><CR>", "<cmd>lua Reload()<cr>")

-- delete highlights on escape
vim.keymap.set("n", "<ESC>", ":noh<CR>", { silent = true })

-- 选中复制到系统剪贴板
vim.keymap.set({ "v", "n" }, "<leader>y", '"+y')

-- 切换buffer
vim.keymap.set("n", "<C-l>", "<cmd>bNext<CR>")
vim.keymap.set("n", "<leader>bc", "<cmd>bdelete<CR>")

-- 移动代码块
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")

-- 移动光标
vim.keymap.set("i", "<C-h>", "<Left>")
vim.keymap.set("i", "<C-j>", "<Down>")
vim.keymap.set("i", "<C-k>", "<Up>")
vim.keymap.set("i", "<C-l>", "<Right>")
vim.keymap.set("i", "<C-a>", "<C-o>^")
vim.keymap.set("i", "<C-e>", "<C-o>$")
vim.keymap.set("i", "<C-f>", "<C-o>w")
vim.keymap.set("i", "<C-b>", "<C-o>b")
vim.keymap.set("n", "<C-a>", "^")

-- Move to window using the <ctrl> hjkl keys

-- Move to window using the <ctrl> hjkl keys
vim.keymap.set("n", "<C-h>", "<C-w>h")
vim.keymap.set("n", "<C-j>", "<C-w>j")
vim.keymap.set("n", "<C-k>", "<C-w>k")
vim.keymap.set("n", "<C-l>", "<C-w>l")

-- Resize window using <ctrl> arrow keys
vim.keymap.set("n", "<leader>Up", "<cmd>resize +2<cr>")
vim.keymap.set("n", "<leader>Down", "<cmd>resize -2<cr>")
vim.keymap.set("n", "<leader>Left", "<cmd>vertical resize -2<cr>")
vim.keymap.set("n", "<leader>Right", "<cmd>vertical resize +2<cr>")

-- 分屏
vim.keymap.set("n", "<leader>wb", "<C-w>s") -- Split Window Below
vim.keymap.set("n", "<leader>wr", "<C-w>v") -- Split WIndow Right

-- save file
vim.keymap.set({ "i", "x", "n", "s" }, "<C-s>", "<cmd>w<cr><esc>")

-- terminal
-- vim.keymap.set("t", "<A-t>", [[<C-\><C-n>]], { buffer = 0 })
-- vim.keymap.set("t", "jk", [[<C-\><C-n>]], { buffer = 0 })
-- vim.keymap.set("t", "<C-h>", [[<Cmd><wincmd h<CR>]], { buffer = 0 })
-- vim.keymap.set("t", "<C-j>", [[<Cmd>wincmd j<CR>]], { buffer = 0 })
-- vim.keymap.set("t", "<C-k>", [[<Cmd>wincmd k<CR>]], { buffer = 0 })
-- vim.keymap.set("t", "<C-l>", [[<Cmd>wincmd l<CR>]], { buffer = 0 })
-- vim.keymap.set("t", "<C-w>", [[<C-\><C-n><C-w>]], { buffer = 0 })

-- toggleterm
vim.keymap.set({ "n", "t" }, "<C-f>", "<cmd>ToggleTerm direction=float <cr>")
vim.keymap.set({ "n", "t" }, "<C-=>", "<cmd>ToggleTerm<cr>")
-- vim.keymap.set({ "n", "t" }, "<C-b><C-b>", "<cmd>ToggleTerm size=10 direction=horizontal<cr>")
-- vim.keymap.set({ "n", "t" }, "<C-=><C-r>", "<cmd>ToggleTerm size=80 direction=vertical<cr>")
-- vim.keymap.set({ "n", "t" }, "<C-=><C-g>", "<cmd>ToggleTermToggleAll<cr>")

vim.keymap.set("t", "<C-h>", "<cmd> wincmd h<cr>", { noremap = true, silent = true })
vim.keymap.set("t", "<C-j>", "<Cmd>wincmd j<CR>", { noremap = true, silent = true })
vim.keymap.set("t", "<C-k>", "<Cmd>wincmd k<CR>", { noremap = true, silent = true })
vim.keymap.set("t", "<C-l>", "<Cmd>wincmd l<CR>", { noremap = true, silent = true })
vim.keymap.set("t", "<C-w>", "<C-\\><C-n><C-w>", { noremap = true, silent = true })
